import { reqGetById, reqCreateOrEdit } from '../../api/user';
import { getStorage } from '../../utils/storage';
import { reqUploadFile } from '../../api/file';

Page({
  data: {
    // 用户信息
    userInfo: {
      avatar: '', // 头像地址
      nickname: '', // 昵称
      sex: '', // 性别
      birthday: '', // 生日
      city: '', // 城市
    },
    // 性别完整列表
    sexList: ['男', '女', '未知',],
    // 性别可选择列表
    selectableSexList: ['男', '女'],
    // 控制生日下拉选是否可选
    disabled: false,
  },

  onLoad() {
    this.getUserInfo()
  },

  // 获取用户信息
  async getUserInfo() {
    const token = getStorage('token') || ''
    if (token) {
      const { data } = await reqGetById(token)
      if (data.birthday) {
        this.setData({ disabled: true })
      }
      this.setData({
        'userInfo.nickname': data.nickname,
        'userInfo.birthday': data.birthday,
        'userInfo.city': data.city,
        'userInfo.sex': data.sex || 2,
        'userInfo.avatar': data.avatar
      })
    }
  },

  // 保存信息
  async handleSave() {
    const token = getStorage('token') || ''
    if (token) {
      const userInfo = { ...this.data.userInfo, id: token }
      await reqCreateOrEdit(userInfo)
    }
    await wx.switchTab({
      url: '../../pages/mine/mine',
    })
  },

  // 修改昵称
  bindNicknameChange(event) {
    this.setData({ 'userInfo.nickname': event.detail.value })
  },

  // 修改性别
  bindSexChange(event) {
    this.setData({ 'userInfo.sex': event.detail.value })
  },

  // 修改生日
  bindBirthdayChange(event) {
    this.setData({ 'userInfo.birthday': event.detail.value })
  },

  // 修改城市
  bindCityChange(event) {
    this.setData({ 'userInfo.city': event.detail.value[1] })
  },

  // 修改头像
  async onChooseAvatar(event) {
    const avatarUrl = event.detail.avatarUrl;
    const { data } = await reqUploadFile(avatarUrl)
    this.setData({
      'userInfo.avatar': data
    })
  },
})